#ifndef INTERFACE_H_INCLUDED
#define INTERFACE_H_INCLUDED
#include <cstdlib>
#include <SFML/Graphics.hpp>
#include <string>
#include <sstream>
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>

class Infanterie;
class Tank;
class helico;

#include "..\GamePlay\general.h"
#include "..\Unite\unite.h"
#include "..\Unite\tank.h"
#include "..\Unite\infanterie.h"
#include "..\Unite\helico.h"
#include "..\System\collision.h"
#include "..\System\Option.h"

class Unite;
class MenuMultijoueur
{
    public:
    MenuMultijoueur();
    ~MenuMultijoueur();
    std::vector<Unite*> Boucle(sf::RenderWindow *app, int *ia);

    private:
    sf::Texture image_fond, image_tank, image_bouton, image_debut;
    sf::Sprite sprite_fond, sprite_tank, sprite_down, sprite_up, sprite_left, sprite_right, sprite_unite;
    sf::Sprite sprite_debut;
    sf::Text texte, status;
    sf::Font font;
    int nombre_unite_disponible, id_uniteselect, id_equipepoint[4], equipe_actu, equipe_max;
    std::vector<std::vector<std::string>* > unite_disp;
    std::vector<std::vector<std::string>* > arme_disp;
    std::vector<std::vector<std::string>* > canon_disp;
    std::vector<std::vector<std::string>* > missile_disp;
    std::vector<int> equipe_unite[4];
    std::vector<std::string> texte_unite;
    sf::SoundBuffer m_bufferclic;
    sf::Sound m_soundclic
    ;
};
class generationTerrain
{
    public:
    generationTerrain();
    void boucle(sf::RenderWindow *app);

    private:
    sf::Texture m_bouton, m_interface, m_image_fond, m_image_select, m_image_collision;
    std::vector<sf::Texture*> m_image_terre;
    std::vector<sf::Sprite> m_sprite_terre;
    sf::Sprite m_fond, m_genere, m_continuer, m_facile, m_moyen, m_difficile, m_relief, m_pas, m_sprite_fond, m_sprite_bouton;
    sf::Sprite m_sprite_select, m_sprite_curseur, m_sprite_collision, m_sprite_collision_rect;
    sf::Font font;
    sf::Text m_seed, m_position;
    int taille;
};
class Interface_Option
{
    public:
    Interface_Option();
    void boucle(sf::RenderWindow *app);

    private:
    Option m_option;
    sf::Texture m_image_principal, m_image_bouton;
    sf::Sprite m_qualite, m_volume, m_key, m_fond;
    sf::Text m_texte_volume, m_texte_qualite, m_texte_key;
    sf::Font font;
    int width, volume;
};
int MenuPrincipal(sf::RenderWindow *app, bool animation);

#endif // INTERFACE_H_INCLUDED
